package demo.service;

import demo.Result;
import demo.entity.Comment;
import demo.entity.Score;
import demo.repository.ScoreRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 评价分数 Service
 *
 * @author 肖溥博文
 * @version 1.6
 */
@Service
public class ScoreService {
    @Autowired
    ScoreRepository scoreRepository;

    /**
     * 按 评价 id 获取该评价对应的所有分数
     *
     * @param commentId 评价 id
     * @return 分数数组
     */
    public List<Score> listScores(Long commentId) {
        return scoreRepository.findScoresByCommentId(commentId);
    }

    /**
     * 为 评价 id 对应的评价添加分数
     *
     * @param scores    分数对象的数组
     * @param commentId 评价 id
     * @return 结果对象
     */
    public Result add(List<Score> scores, Long commentId) {
        if (scores.isEmpty()) {
            return Result.error("评价失败，没有评分");
        }
        for (Score score : scores) {
            score.setCommentId(commentId);
            scoreRepository.save(score);
        }
        return Result.success("评价成功");
    }

    /**
     * 获取评价的总评分
     *
     * @param comment 评价对象
     * @return 结果对象，包含该评价的分数（Double 类型）
     */
    public Result getScore(Comment comment) {
        List<Score> scores = listScores(comment.getCommentId());
        if (scores.isEmpty()) {
            return Result.success("暂无评分");
        }

        Long total = 0L;
        for (Score score : scores) {
            total += score.getScore();
        }

        return Result.success("该评价的总评分查询成功", total.doubleValue() / scores.size());
    }
}
